package com.cos.lession73_listcontainer.slice;

import com.alibaba.fastjson.JSON;
import com.cos.lession73_listcontainer.ResourceTable;
import com.cos.lession73_listcontainer.entity.Emp;
import com.cos.lession73_listcontainer.provider.EmpItemProvider;
import com.zzrv5.mylibrary.ZZRCallBack;
import com.zzrv5.mylibrary.ZZRHttp;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.ListContainer;

import java.util.List;

public class MainAbilitySlice extends AbilitySlice {
    //要请求的路径
    private String url="http://g732mv.natappfree.cc/emp/getAll";

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        //1.加载ListContainer
        ListContainer listContainer= (ListContainer) findComponentById(ResourceTable.Id_empList);
        //创建变量接受this slice的实例
        //方便下面匿名内部类使用这个对象实例
        MainAbilitySlice _this = this;
        //2. 获取数据 ZZRHttp github开源发布的鸿蒙http请求工具
        ZZRHttp.get(url,new ZZRCallBack.CallBackString(){
            //失败执行的方法
            @Override
            public void onFailure(int i, String s) {

            }
            //成功响应的方法
            //s 服务器响应的数据
            @Override
            public void onResponse(String s) {
                //json转换为对象 list集合
                List<Emp> emps = JSON.parseArray(s, Emp.class);
                System.out.println("==================================");
                System.out.println(MainAbilitySlice.this);
                //创建empProvider
                EmpItemProvider empItemProvider = new EmpItemProvider(emps,MainAbilitySlice.this);

                //设置子线程来获取数据等等资源 ,主线应该UI布局加载
                getUITaskDispatcher().asyncDispatch(new Runnable() {
                    @Override
                    public void run() {
                        //设置数据项给list
                        listContainer.setItemProvider(empItemProvider);
                        //当数据发生变化的时候重新加载
                        empItemProvider.notifyDataChanged();
                    }
                });
            }
        });
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}
